// 类的装饰器
// 装饰器本身是一个函数
// 类装饰器接收的参数是构造函数
// 装饰器通过 @ 符号来使用
// function testDecorator(flag:boolean){
//   if(flag){
//     return function(constructor: any){
//       constructor.prototype.getName=()=>{
//         console.log('dell')
//       }
//     }
//   }else{
//     return function(constructor: any){}
//   }
  
// }

// function testDecorator(constructor: any){
//   // constructor.prototype.getName=()=>{
//   //   console.log('dell')
//   // }
//   console.log("testDecorator");
// }

// 
// function testDecorator1() {
//   return function testDecorator1<T extends new (...args:any[]) => {}> (constructor: T){
//     return class extends constructor {
//       name = 'lee';
//       getName() {
//         return this.name;
//       }
//     }
//   }
// }

// const Test1 = testDecorator1()(
//   class {
//     name: string;
//     constructor(name:string){
//       this.name = name;
//     }
//   }
// )

// @testDecorator(true)
// @testDecorator1()
// class Test {
//   name: string;
//   constructor(name: string) {
//     console.log(1)
//     this.name = name
//     console.log(2)
//   }
// }

// const test = new Test("dell");
// console.log(test)
// console.log((test as any).getName());

// const test2 = new Test1("dell");
// console.log(test2.getName())